/**
 * @description 显示消息提示框
 * @param {String} title 提示的内容(require)
 * @param {String} icon 图标[有效值"success","loading","none"(不显示图标,此时title文本最多可显示两行,since 1.9.0)]
 * @param {Number} duration 提示的延迟时间[单位毫秒,默认:1500]
 * @param {Boolean} mask 是否显示透明蒙层,防止触摸穿透,默认:false
 * @param {String} image 自定义图标的本地路径,image的优先级高于icon(since 1.1.0)
 */
export function showToast(title, icon, duration = 1500, mask = false, image) {
  return new Promise(function (resolve, reject) {
    wx.showToast({
      title: title,
      icon: icon,
      duration: duration,
      mask: mask,
      image: image,
      success: res => {
        let data = {
          error: 'success',
          error_description: '成功',
          code: 200
        }
        resolve(data)
      },
      fail: function (error) { // fail调用接口失败
        console.error('error:' + JSON.stringify(error))
        reject({
          error: 'network_error',
          error_description: '网络异常',
          code: 0
        })
      },
      complete: function (res) { // complete

      }
    })
  })
}

/**
 * @description 显示loading提示框,需主动调用wx.hideLoading才能关闭提示框
 * @param {String} title 提示的内容(require)
 * @param {Boolean} mask 是否显示透明蒙层,防止触摸穿透,默认:false
 * @since 1.1.0
 */
export function showLoading(title, mask = false) {
  return new Promise(function (resolve, reject) {
    wx.showLoading({
      title: title,
      mask: mask,
      success: res => {
        let data = {
          error: 'success',
          error_description: '成功',
          code: 200
        }
        resolve(data)
      },
      fail: function (error) { // fail调用接口失败
        console.error('error:' + JSON.stringify(error))
        reject({
          error: 'network_error',
          error_description: '网络异常',
          code: 0
        })
      },
      complete: function (res) { // complete

      }
    })
  })
}

/**
 * @description 隐藏loading提示框
 * @param {Number} timeout 超时多少毫秒
 * @since 1.1.0
 */
export function hideLoading(timeout = 0) {
  setTimeout(function () {
    wx.hideLoading()
  }, timeout)
}

/**
 * @description 隐藏消息提示框
 * @param {Number} timeout 超时多少毫秒
 */
export function hideToast(timeout = 0) {
  setTimeout(function () {
    wx.hideToast()
  }, timeout)
}

/**
 * @description ​显示模态弹窗
 * @param {String} title 提示的标题(require)
 * @param {String} content 提示的内容(require)
 * @param {String} confirmText 确定按钮的文字,默认为"确定",最多4个字符
 * @param {String} confirmColor 确定按钮的文字颜色,默认为"#3CC51F"
 * @param {Boolean} showCancel 是否显示取消按钮,默认为:true
 * @param {String} cancelText 取消按钮的文字,默认为"取消",最多4个字符
 * @param {String} cancelColor 取消按钮的文字颜色,默认为"#000000"
 */
export function showModal(title, content, confirmText = '确定', confirmColor = '#3CC51F', showCancel = true, cancelText = '取消', cancelColor = '#000000') {
  return new Promise(function (resolve, reject) {
    wx.showModal({
      title: title,
      content: content,
      confirmText: confirmText,
      confirmColor: confirmColor,
      showCancel: showCancel,
      cancelText: cancelText,
      cancelColor: cancelColor,
      success: res => {
        let data = {
          error: 'success',
          error_description: '成功',
          code: 200,
          confirm: res.confirm, // 为true时,表示用户点击了确定按钮
          cancel: res.cancel // 为true时,表示用户点击了取消[用于Android系统区分点击蒙层关闭还是点击取消按钮关闭](since 1.1.0)
        }
        resolve(data)
      },
      fail: function (error) { // fail调用接口失败
        console.error('error:' + JSON.stringify(error))
        reject({
          error: 'network_error',
          error_description: '网络异常',
          code: 0
        })
      },
      complete: function (res) { // complete

      }
    })
  })
}

/**
 * @description 显示操作菜单
 * @param {Array} itemList 按钮的文字数组,数组长度最大为6个[字符串数组](require)
 * @param {String} itemColor 按钮的文字颜色,默认为"#000000"
 */
export function showActionSheet(itemList, itemColor = '#000000') {
  return new Promise(function (resolve, reject) {
    wx.showActionSheet({
      itemList: itemList,
      itemColor: itemColor,
      success: res => {
        let data = {
          error: 'success',
          error_description: '成功',
          code: 200,
          tapIndex: res.tapIndex // 用户点击的按钮,从上到下的顺序,从0开始
        }
        resolve(data)
      },
      fail: function (error) { // fail调用接口失败
        console.error('error:' + JSON.stringify(error))
        reject({
          error: 'network_error',
          error_description: '网络异常',
          code: 0
        })
      },
      complete: function (res) { // complete

      }
    })
  })
}
